<?php 
class FacturasController extends AppController{
    var $name = "Facturas";
    var $helpers = array('html','Form','javascript','Session','Numerosaletras');
	var $components = array('RequestHandler');
    
    function index(){ 
        $this->layout="ajax";		
		if($this->JQGridPaginate->isGrid){
			$fields = array('Factura.id',
							'Factura.numero',
							'"Cliente"."razonsocial" AS "Factura__cliente"',
							'"Usuario"."nombres" AS "Factura__usuario"',
							'"Moneda"."nombre" AS "Factura__moneda"',
							'Factura.monto_sin_igv',
							'Factura.monto_con_igv',
							'Factura.montopagado',
							'"Factura"."created"::date AS "Factura__created"',
			                '"Estadofactura"."descripcion" AS "Factura__estadofactura"',
			                '"Estadopago"."descripcion" AS "Factura__estadopago"');
  
			$this->JQGridPaginate->recursive = 0;
			$this->JQGridPaginate->cakefields = $fields;
			$this->JQGridPaginate->condition = array('Factura.estado_id'=>1);
			$this->autoRender = false;
			echo $this->JQGridPaginate->paginate("Factura");	
		}
    }
    
    function add($id = null){
    	$this->set('id',$id);
    	
		$this->layout = 'ajax';
		if(!empty($this->data)){
			echo 'hay data';
		}
		
		if(!empty($id) && !($id === 'undefined')){
			$this->data = $this->Factura->getFactura($id);
		}
		
		$this->loadModel('Cliente');
		$listaClientes = $this->Cliente->find('list',array('fields'=>array('Cliente.id','Cliente.razonsocial'),
														'order'=>'Cliente.razonsocial'));
		$this->loadModel('Moneda');
		$listaMonedas = $this->Moneda->find('list',array('fields'=>array('Moneda.id','Moneda.nombre'),
											'order'=>'Moneda.nombre','conditions'=>array('Moneda.id'=>array(1,2))));
		$this->loadModel('Tipodocumento');
		$tipodocumentos = $this->Tipodocumento->find('list',array('fields'=>array('Tipodocumento.id','Tipodocumento.descripcion'),
											'order'=>'Tipodocumento.descripcion','conditions'=>array('Tipodocumento.id'=>array(3,4))));
		$this->set('monedas', $listaMonedas);
		$this->set('clientes', $listaClientes);
		$this->set('tipodocumentos', $tipodocumentos);
	}
	
	function actualizar(){ 
	    Configure::write('debug', 0);
	    $accion = empty($this->params['named']['oper'])?'delete':$this->params['named']['oper'];
		$this->layout = 'ajax';
    	
	    if($accion == 'update'){ 
			$this->Factura->begin();
			/** editamos o agregamos **/
			$respuesta = $this->Factura->setFactura($this->data,$this->variables);
			if($respuesta['respuesta']){
				$this->Factura->commit();
				echo json_encode($respuesta);
			}else{
				$this->Factura->rollback();
				echo json_encode($respuesta);
			}
		}else{
			/** Desactivamos la factura y devolvemos los insumos a almacen **/
			$respuesta = $this->Factura->setAnularFactura($this->data['Factura']['id'],$this->variables);
    		if($respuesta['respuesta']){
				$this->Factura->commit();
				echo json_encode($respuesta);
			}else{
				$this->Factura->rollback();
				echo json_encode($respuesta);
			}
		}
		$this->autoRender = false;
	}
		
	/** GENERA LA VISTA PARA ELEGIR EL ALMACEN DEL CUAL
	 *  RETIRAR EL VALE DE SALIDA
	 */
	function setValesalidaAlmacenes($factura_id = null){ //configure::write('debug',1);
		$this->loadModel('Detallefactura');
		$this->layout = 'ajax';
		$valesalida = $this->Factura->getValesalidaAlmacenes($factura_id,$this->variables);
		$almacenes = $this->Detallefactura->getAlmacenes($factura_id);
		
		$this->set('factura_id',$factura_id);
		$this->set('valesalida',$valesalida);
		$this->set('almacenes',$almacenes);
	}
	
	/** LISTA LAS FACTURAS QUE AUN FALTAN PAGAR Y 
	 *  ESTAN EN ESTADO ENTREGADO
	 */
	function pagos(){ 
        $this->layout="ajax";		
		if($this->JQGridPaginate->isGrid){
			$fields = array('Factura.id',
							'Factura.numero',
							'"Cliente"."razonsocial" AS "Factura__cliente"',
							'"Usuario"."nombres" AS "Factura__usuario"',
							'"Moneda"."nombre" AS "Factura__moneda"',
							'Factura.monto_sin_igv',
							'Factura.monto_con_igv',
							'Factura.montopagado',
							'"Factura"."created"::date AS "Factura__created"',
			                '"Estadofactura"."descripcion" AS "Factura__estadofactura"',
			                '"Estadopago"."descripcion" AS "Factura__estadopago"');
  
			$this->JQGridPaginate->recursive = 0;
			$this->JQGridPaginate->cakefields = $fields;
			$this->JQGridPaginate->condition = array('Factura.estado_id'=>1,'Factura.estadofactura_id'=>3,'Factura.estadopago_id'=>array(1,2));
			$this->autoRender = false;
			echo $this->JQGridPaginate->paginate("Factura");
		}
    }
    
    /**AVENTURA: GENERA EL PDF DE LA BOLETA/FACTURA PARA LA IMPRESION
     */
	function getPdf($factura_id){
       configure::write('debug', 2);
       $this->layout = 'pdf'; 
       $factura = $this->Factura->getFactura($factura_id);
       $this->set('factura',$factura);
    }
}